/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package presenter;

import view.TelaCadPaciente;
import logs.Log;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import model.Paciente;
import state.EstadoEditar;
import state.EstadoNovo;
import state.EstadoVisualizar;
import state.AbstractClienteState;

/**
 *
 * @author KDC
 */
public class CadPacientePresenter {

    PacientePresenter cp;
    Log log;
    AbstractClienteState estado;
    Paciente paciente;
    TelaCadPaciente view;

    public CadPacientePresenter(Paciente pPaciente, PacientePresenter pacientePresenter, Log pLog) {

        view = new TelaCadPaciente();
        cp = pacientePresenter;
        cp.carregarPacientes();
        log = pLog;
        this.paciente = pPaciente;
        view.setVisible(true);
        view.setLocationRelativeTo(null);

        if (this.paciente == null) {
            estado = new EstadoNovo(this);

        } else {
            estado = new EstadoVisualizar(this);
        }

        view.getJbSalvar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                salvarCommand();
            }
        });

        view.getJbSair().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                view.dispose();
            }
        });

        view.getBtnNovo().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                novo();
            }
        });

        view.getBtnEditar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                editar();
            }
        });

    }

    public void novo() {
        setEstado(new EstadoNovo(this));
    }

    public void editar() {
        setEstado(new EstadoEditar(this));
    }

    public void salvarCommand() {
        estado.salvar(this);
    }

    public PacientePresenter getCp() {
        return cp;
    }

    public void setCp(PacientePresenter cp) {
        this.cp = cp;
    }

    public Log getLog() {
        return log;
    }

    public void setLog(Log log) {
        this.log = log;
    }

    public AbstractClienteState getEstado() {
        return estado;
    }

    public void setEstado(AbstractClienteState estado) {
        this.estado = estado;
    }

    public Paciente getPaciente() {
        return paciente;
    }

    public void setPaciente(Paciente paciente) {
        this.paciente = paciente;
    }

    public TelaCadPaciente getView() {
        return view;
    }

    public void setView(TelaCadPaciente view) {
        this.view = view;
    }

    public Paciente getPacienteEdicao() {
        return paciente;
    }

    public void setPacienteEdicao(Paciente pacienteEdicao) {
        this.paciente = pacienteEdicao;
    }
}
